//8.4用哟个状态机设计一个交通灯控制器，设计要求：A路和B路，每路都要有红黄绿三种灯，持续时间为红灯45秒，黄灯5秒，绿灯40秒，A灯和B灯的状态转换是：
/*
（1）A红，B绿（持续时间40s）
（2）A红，B黄（持续时间5s）
（3）A绿，B红（持续时间40s）
（4）A黄，B红（持续时间5s）
*/

module traffice_led(clk,rst,led_a,led_b);
    input clk,rst;//clk时间设置为1s
	 output reg  [3:0] led_a,led_b;// 3'b100,红灯亮，3‘b010,黄灯亮；3’b001,绿灯亮
	 reg [1:0]state;
	 parameter S0=2'b00,S1=2'b01,S2=2'b10,S3=2'b11;
	 reg [9:0] temp;
	 reg[5:0] count=0,count1=0;
	 reg clk_m;
	 
 
	 
always@(posedge clk) begin  //设置单位时间。
    if(!rst) begin
	   temp<=0;
	  end
	 else if(temp<100)begin
	           temp<=temp+1; 
	           if(temp<50) begin
	              clk_m<=0;
					 end
					else 
					  clk_m=1;
				end
			  else 
			     temp<=0;
end


always@(posedge clk_m) begin
     if(!rst) begin led_a=0; led_b=0;state=S0;end
	  else 
	    case(state) 
		 S0:begin led_a=3'b100; led_b=3'b001;if(count==30) begin  state<=S1;end end  
		 S1:begin led_a=3'b100; led_b=3'b010;  if(count1==2)begin state<=S2;end end //count<=0;end else count<=count+1;end
		 S2:begin led_a=3'b001; led_b=3'b100; if(count==30)begin  state<=S3;end end //count<=0;end else count<=count+1;end
		 S3:begin led_a=3'b010; led_b=3'b100; if(count1==2)begin  state<=S0;end end//count<=0;end else count<=count+1;end
		 default: begin led_a=0; led_b=0;state=S0;end
		endcase
	end
always@(posedge clk_m) begin

 if(clk_m)begin 
    if(count>40)
	    count<=0;
   else count<=count+1;
	 end
	end
always@(posedge clk_m) begin
  if(clk_m)begin 
    if(count1>5)
	    count1<=0;
   else count1<=count1+1;
	end	
end	 
	 
endmodule


	  
	 
